[2020] 정보 처리 기사 실기 1-프로그래밍 언어 활용(3)

JIGGLYPOP

염동환


새로운 개발을 좋아하는 개발자

2020-07-11 22:23 시에 저장한 글입니다.

정보처리기사 공부 후 정리 자료입니다. 정확하지 않을 수 있으니 꼭 책을 참고해서 공부하세요

2020 정보 처리 기사 프로그래밍 언어 활용 요약 입니다. 정처기 공부를 할 때 활용하세요.

1. 절차적 프로그래밍 언어


  • 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술해 나가는 언어
  • 절차적 프로그래밍 언어의 종류
언어 특징
C 1972년 미국 벨 연구소의 데니스 리치에 의해 개발. 시스템 프로그래밍 언어로 사용. 포인터, 고급 프로그래밍 언어이면서 저급 프로그램 언어의 특징을 모두 갖춘 컴파일러 방식의 언어
ALGOL 수치 계산이나 논리 연산을 위한 과학 기술 계산용 언어
COBOL 사무 처리용 언어. 영어 문장 형식으로 구성되어 있어 이해와 사용이 쉬움, 4개의 DIVISION으로 구성
FORTRAN 과학 기술 계산용 언어. 수학과 공학 분야의 공식이나 수식과 같은 형태로 프로그래밍 가능

2. 스크립트 언어


  • HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 것으로, 기계어로 컴파일 되지 않고 별도의 번역기가 소스를 분석하여 동작하게 하는 언어
  • 스크립트 언어의 분류
  • 서버용 스크립트 언어 : 서버에서 해석되어 실행된 후 결과만 클라이언트로 보내는 스크립트 언어( ASP, JSP, PHP, 파이썬, 펄, 루비)
  • 클라이언트용 스크립트 언어 : 클라이언트의 웹 브라우저에서 해석되어 실행되는 스크립트 언어(자바 스크립트, VB 스크립트)
자바 스크립트 웹 페이지의 동작을 제어하며, 변수 선언이 필요 없음
ASP 서버 측에서 동적으로 수행되는 페이지를 만들기 위한 언어. 마이크로 소프트 사에서 제작하였으며, Windows 계열에서만 수행 가능한 프로그래밍 언어
JSP Java로 만들어진 서버용 스크립트 언어. 다양한 운영체제에서 사용이 가능
PHP 서버용 스크립트 언어, Linux, Unix, Windows 운영체제에서 사용이 가능. C, Java 등과 문법이 유사하여 배우기 쉽고 웹 페이지 제작에 많이 사용
파이썬 객체지향 기능을 지원하는 대화형 인터프리터 언어

3. 선언형 언어


  • 프로그램이 수행해야 할 문제를 기술하는 언어로, 목표를 명시하고 알고리즘은 명시 X
  • 선언형 언어의 분류
  • 함수형 언어 : 수학적 함수를 조합하여 문제를 해결하는 언어로, 알려진 값을 함수에 적용하는 것을 기반(LISP)
  • 논리형 언어 : 기호 논리학에 기반을 둔 언어로, 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행(PROLOG)
HTML 인터넷의 표준 문서인 하이퍼텍스트 문서를 만들기 위해 사용하는 언어
LISP 인공지능 분야에 사용되는 언어로, 기본 자료 구조가 연결 리스트 구조이며 재귀호출을 많이 사용
PROLOG 논리학을 기초로 한 고급 언어로, 인공 지능 분야에서의 논리적인 추론이나 리스트 처리 등에 주로 사용
XML 기존 HTML의 단점을 보완하여 웹에서 구조화된 폭넓고 다양한 문서들을 상호 교환할 수 있도록 설계된 언어. 사용자가 HTML에 새로운 태그를 정의 가능
Haskell 함수형 프로그래밍 언어로, 부작용이 없고 코드가 간결하여 에러 발생 가능성이 낮음

4. 객체지향 프로그래밍 언어


  • 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체로 만들어 기계적인 부품들을 조립하여 제품을 만들듯이 소프트웨어를 개발할 때도 객체들을 조립해서 프로그램을 작성할 수 있도록 한 프로그래밍 기법
언어 특징
Java 분산 네트워크 환경에 적용이 가능하며, 멀티스레드 기능을 제공하므로 여러 작업을 동시에 처리할 수 있음, 운영체제 및 하드웨어에 독립적이며, 이식성, 캡슐화, 재사용성
C++ C언어에 객체지향 개념을 적용한 언어. 모든 문제를 객체로 모델링하여 표현
Smalltalk 1세대 객체지향 프로그래밍 언어 중 하나로 순수한 객체지향 프로그래밍 언어. 최초로 GUI를 제공

5. 객체지향 프로그래밍 언어의 구성 요소


  • 객체(Object) : 데이터(속성)와 이를 처리하기 위한 연산(메소드)을 결합시킨 실체. 데이터 구조와 그 위에서 수행되는 연산들을 가지고 있는 소프트웨어 모듈
  • 속성(Attribute) : 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의하는 것으로서 성질, 분류, 식별, 수량 또는 현재 상태 등을 표현
  • 메소드(Method) : 객체가 메시지를 받아 실행해야 할 때 구체적인 연산을 정의하는 것, 객체의 상태를 참조하거나 변경하는 수단
  • 클래스(Class) : 두 개 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하는 요소 (공통된 특성과 행위를 갖는 객체의 집합, 객체의 유형 또는 타입을 의미, 데이터를 추상화하는 단위)
  • 메시지(Message) : 객체들 간에 상호작용을 하는데 사용되는 수단. 객체의 메소드(동작, 연산)를 일으키는 외부의 요구 사항, 메시지를 받은 객체는 대응하는 연산을 수행하여 예상된 결과를 반환

6. 객체지향 프로그래밍 언어의 특징


  • 캡슐화(Encapsulation) :데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것. 캡슐화된 객체의 세부 내용이 외부에 은폐(정보 은닉)되어, 변경이 발생할 때 오류의 파급 효과 적음, 재사용이 용이
  • 정보 은닉(Information Hiding): 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
  • 추상화(Abstraction) : 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는 것. 모델화, 데이터의 공통된 성질을 추출하여 슈퍼 클래스를 선정하는 개념
  • 상속성(Inheritance) : 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스가 물려받는 것. 상속성을 이용하면 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서 다시 정의 하지 않고서도 즉시 사용할 수 있음
  • 다형성(Polymorphism) : 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력. 객체(클래스)들은 동일한 메소드명을 사용하며 같은 의미의 응답을 함

7. 예외 처리


  • 예외(Exception) : 프로그램의 정상적인 실행을 방해하는 조건이나 상태
  • 예외 처리(Exception Handling) : 예외가 발생했을 때 프로그래머가 해당 문제에 대비해 작성해 놓은 처리 루틴을 수행하도록 하는 것
  • 예외의 원인 : 하드웨어 문제, 운영체제의 설정 실수, 라이브러리 손상, 사용자의 입력 실수, 받아들일 수 없는 연산, 할당하지 못하는 기억장치 접근 등
  • java의 예외 객체
예외 객체 발생 원인
ClassNotFoundException 클래스를 찾지 못한 경우
NoSuchMethodException 메소드를 찾지 못한 경우
FileNotFoundException 파일을 찾지 못한 경우
InterruptedIOException 입·출력 처리가 중단된 경우
ArithmeticException 0으로 나누는 등의 산술 연산에 대한 예외가 발생한 경우
IllegalArgumentException 잘못된 인자를 전달한 경우
NumberFormatException 숫자 형식으로 변환할 수 없는 문자열을 숫자 형식으로 변환한 경우
ArrayIndexOutOfBoundsException 배열의 범위를 벗어난 접근을 시도한 경우
NegativeArraySizeException 0보다 작은 값으로 배열의 크기를 지정한 경우
NullPointerException 존재하지 않는 객체를 참조한 경우